#include <stdio.h>
#include <stdlib.>

// author：	 吴开杰
// datetime：2021-06-26 12:07

int main()
{

	/*
	两个关键点：
	1.进制之间的转换，十进制，二进制，八进制，十六进制，之间的转换方式
	1.1、二进制的表示方法

	2.位运算符操作，<<, >>, ~, |, &
	int i = B1100 = 12;
	int j = B1001 = 9;	
	2.1 
	<<, 左移运算符，去掉高位，低位补0
	>>, 右移运算符，去掉低位，高位补0
	// 将1100向左移动
	i << 1 --> 1100 --> l-1 r+0 --> 1000 --> 8
	// 将1100向右边移动1位，并再向左边移位，结果不变
	i >> 1 --> 1100 --> r+0 l-0 --> 0110 --> 6
	0110 << 1 --> 1100 ->> 12
	2.2
	~, 取反操作，即：将二进制位的每一位都进行交互，0变成1，1变成0
	|, 或操作，比较两个二进制数，相同的位，0:0->0 1:0->1 0:1->1 1:1->1
	&, 与操作，比较两个二进制数，相同的位，0:0->0 1:0->0 0:1->0 1:1->1
	^, 异常操作，相同为0，不同为1

	~i  --> 1100 --> 0011
	i|j -->
	1 1 0 0
	1 0 0 1
	--------
	1 1 0 1
	--> 1101 --> 13
	i&j -->
	1 1 0 0
	1 0 0 1
	--------
	1 0 0 0
	--> 1000 --> 8
	i^j -->
	1 1 0 0
	1 0 0 1
	--------
	0 1 0 1
	--> 0101 --> 5

	位操作的意义：
	将操作数中的第n位置1，其他位不变：num = num | 1 << n
	例：将1000，第2位置1
	1 0 0 0
	  1 0 0
	-------
	1 1 0 0
	将操作数中的第n位置0，其他位不变：num = num & ~(1<<n)
	例：将1100，第2位置1
	1100     1100	  1100
	   1 --> 0100 --> 1011 --> &
	----------------------------
					  1000 --> 8 
	判断第n位的值是真假(0:假，1:真)：if(num & 1<<n)
	例：判断第3位是真假
	1101
	1000 --> &
	----
	1000 --> 1 --> 结果为真

	从指定宽度的数据中去除某几位？？？

	*/



















	exit(0);
}
